le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
↳ QTRS
↳ Overlay + Local Confluence
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
IF_GCD(false, x, y) → GCD(minus(y, x), x)
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
MINUS(x, s(y)) → MINUS(x, y)
IF_GCD(false, x, y) → MINUS(y, x)
IF_GCD(true, x, y) → MINUS(x, y)
LE(s(x), s(y)) → LE(x, y)
GCD(s(x), s(y)) → LE(y, x)
MINUS(x, s(y)) → PRED(minus(x, y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
IF_GCD(false, x, y) → GCD(minus(y, x), x)
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
MINUS(x, s(y)) → MINUS(x, y)
IF_GCD(false, x, y) → MINUS(y, x)
IF_GCD(true, x, y) → MINUS(x, y)
LE(s(x), s(y)) → LE(x, y)
GCD(s(x), s(y)) → LE(y, x)
MINUS(x, s(y)) → PRED(minus(x, y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
MINUS(x, s(y)) → MINUS(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
MINUS(x, s(y)) → MINUS(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
MINUS(x, s(y)) → MINUS(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
IF_GCD(false, x, y) → GCD(minus(y, x), x)
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
pred(s(x)) → x
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
gcd(0, y) → y
gcd(s(x), 0) → s(x)
gcd(s(x), s(y)) → if_gcd(le(y, x), s(x), s(y))
if_gcd(true, x, y) → gcd(minus(x, y), y)
if_gcd(false, x, y) → gcd(minus(y, x), x)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
IF_GCD(false, x, y) → GCD(minus(y, x), x)
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
gcd(0, x0)
gcd(s(x0), 0)
gcd(s(x0), s(x1))
if_gcd(true, x0, x1)
if_gcd(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
IF_GCD(false, x, y) → GCD(minus(y, x), x)
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
(1) (IF_GCD(le(x5, x4), s(x4), s(x5))=IF_GCD(false, x6, x7) ⇒ IF_GCD(false, x6, x7)≥GCD(minus(x7, x6), x6))
(2) (le(x5, x4)=false ⇒ IF_GCD(false, s(x4), s(x5))≥GCD(minus(s(x5), s(x4)), s(x4)))
(3) (false=false ⇒ IF_GCD(false, s(0), s(s(x27)))≥GCD(minus(s(s(x27)), s(0)), s(0)))
(4) (le(x28, x29)=false∧(le(x28, x29)=false ⇒ IF_GCD(false, s(x29), s(x28))≥GCD(minus(s(x28), s(x29)), s(x29))) ⇒ IF_GCD(false, s(s(x29)), s(s(x28)))≥GCD(minus(s(s(x28)), s(s(x29))), s(s(x29))))
(5) (IF_GCD(false, s(0), s(s(x27)))≥GCD(minus(s(s(x27)), s(0)), s(0)))
(6) (IF_GCD(false, s(x29), s(x28))≥GCD(minus(s(x28), s(x29)), s(x29)) ⇒ IF_GCD(false, s(s(x29)), s(s(x28)))≥GCD(minus(s(s(x28)), s(s(x29))), s(s(x29))))
(7) (IF_GCD(le(x13, x12), s(x12), s(x13))=IF_GCD(true, x14, x15) ⇒ IF_GCD(true, x14, x15)≥GCD(minus(x14, x15), x15))
(8) (le(x13, x12)=true ⇒ IF_GCD(true, s(x12), s(x13))≥GCD(minus(s(x12), s(x13)), s(x13)))
(9) (true=true ⇒ IF_GCD(true, s(x30), s(0))≥GCD(minus(s(x30), s(0)), s(0)))
(10) (le(x32, x33)=true∧(le(x32, x33)=true ⇒ IF_GCD(true, s(x33), s(x32))≥GCD(minus(s(x33), s(x32)), s(x32))) ⇒ IF_GCD(true, s(s(x33)), s(s(x32)))≥GCD(minus(s(s(x33)), s(s(x32))), s(s(x32))))
(11) (IF_GCD(true, s(x30), s(0))≥GCD(minus(s(x30), s(0)), s(0)))
(12) (IF_GCD(true, s(x33), s(x32))≥GCD(minus(s(x33), s(x32)), s(x32)) ⇒ IF_GCD(true, s(s(x33)), s(s(x32)))≥GCD(minus(s(s(x33)), s(s(x32))), s(s(x32))))
(13) (GCD(minus(x17, x16), x16)=GCD(s(x18), s(x19)) ⇒ GCD(s(x18), s(x19))≥IF_GCD(le(x19, x18), s(x18), s(x19)))
(14) (minus(x17, x16)=s(x18)∧x16=s(x19) ⇒ GCD(s(x18), s(x19))≥IF_GCD(le(x19, x18), s(x18), s(x19)))
(15) (x34=s(x18)∧0=s(x19) ⇒ GCD(s(x18), s(x19))≥IF_GCD(le(x19, x18), s(x18), s(x19)))
(16) (pred(minus(x35, x36))=s(x18)∧s(x36)=s(x19)∧(∀x37,x38:minus(x35, x36)=s(x37)∧x36=s(x38) ⇒ GCD(s(x37), s(x38))≥IF_GCD(le(x38, x37), s(x37), s(x38))) ⇒ GCD(s(x18), s(x19))≥IF_GCD(le(x19, x18), s(x18), s(x19)))
(17) (minus(x35, x36)=x39∧pred(x39)=s(x18)∧(∀x37,x38:minus(x35, x36)=s(x37)∧x36=s(x38) ⇒ GCD(s(x37), s(x38))≥IF_GCD(le(x38, x37), s(x37), s(x38))) ⇒ GCD(s(x18), s(x36))≥IF_GCD(le(x36, x18), s(x18), s(x36)))
(18) (x40=s(x18)∧minus(x35, x36)=s(x40)∧(∀x37,x38:minus(x35, x36)=s(x37)∧x36=s(x38) ⇒ GCD(s(x37), s(x38))≥IF_GCD(le(x38, x37), s(x37), s(x38))) ⇒ GCD(s(x18), s(x36))≥IF_GCD(le(x36, x18), s(x18), s(x36)))
(19) (minus(x35, x36)=s(s(x18)) ⇒ GCD(s(x18), s(x36))≥IF_GCD(le(x36, x18), s(x18), s(x36)))
(20) (x41=s(s(x18)) ⇒ GCD(s(x18), s(0))≥IF_GCD(le(0, x18), s(x18), s(0)))
(21) (pred(minus(x42, x43))=s(s(x18))∧(∀x44:minus(x42, x43)=s(s(x44)) ⇒ GCD(s(x44), s(x43))≥IF_GCD(le(x43, x44), s(x44), s(x43))) ⇒ GCD(s(x18), s(s(x43)))≥IF_GCD(le(s(x43), x18), s(x18), s(s(x43))))
(22) (GCD(s(x18), s(0))≥IF_GCD(le(0, x18), s(x18), s(0)))
(23) (GCD(s(x18), s(s(x43)))≥IF_GCD(le(s(x43), x18), s(x18), s(s(x43))))
(24) (GCD(minus(x20, x21), x21)=GCD(s(x22), s(x23)) ⇒ GCD(s(x22), s(x23))≥IF_GCD(le(x23, x22), s(x22), s(x23)))
(25) (minus(x20, x21)=s(x22)∧x21=s(x23) ⇒ GCD(s(x22), s(x23))≥IF_GCD(le(x23, x22), s(x22), s(x23)))
(26) (x46=s(x22)∧0=s(x23) ⇒ GCD(s(x22), s(x23))≥IF_GCD(le(x23, x22), s(x22), s(x23)))
(27) (pred(minus(x47, x48))=s(x22)∧s(x48)=s(x23)∧(∀x49,x50:minus(x47, x48)=s(x49)∧x48=s(x50) ⇒ GCD(s(x49), s(x50))≥IF_GCD(le(x50, x49), s(x49), s(x50))) ⇒ GCD(s(x22), s(x23))≥IF_GCD(le(x23, x22), s(x22), s(x23)))
(28) (minus(x47, x48)=x51∧pred(x51)=s(x22)∧(∀x49,x50:minus(x47, x48)=s(x49)∧x48=s(x50) ⇒ GCD(s(x49), s(x50))≥IF_GCD(le(x50, x49), s(x49), s(x50))) ⇒ GCD(s(x22), s(x48))≥IF_GCD(le(x48, x22), s(x22), s(x48)))
(29) (x52=s(x22)∧minus(x47, x48)=s(x52)∧(∀x49,x50:minus(x47, x48)=s(x49)∧x48=s(x50) ⇒ GCD(s(x49), s(x50))≥IF_GCD(le(x50, x49), s(x49), s(x50))) ⇒ GCD(s(x22), s(x48))≥IF_GCD(le(x48, x22), s(x22), s(x48)))
(30) (minus(x47, x48)=s(s(x22)) ⇒ GCD(s(x22), s(x48))≥IF_GCD(le(x48, x22), s(x22), s(x48)))
(31) (x53=s(s(x22)) ⇒ GCD(s(x22), s(0))≥IF_GCD(le(0, x22), s(x22), s(0)))
(32) (pred(minus(x54, x55))=s(s(x22))∧(∀x56:minus(x54, x55)=s(s(x56)) ⇒ GCD(s(x56), s(x55))≥IF_GCD(le(x55, x56), s(x56), s(x55))) ⇒ GCD(s(x22), s(s(x55)))≥IF_GCD(le(s(x55), x22), s(x22), s(s(x55))))
(33) (GCD(s(x22), s(0))≥IF_GCD(le(0, x22), s(x22), s(0)))
(34) (GCD(s(x22), s(s(x55)))≥IF_GCD(le(s(x55), x22), s(x22), s(s(x55))))
POL(0) = 0
POL(GCD(x1, x2)) = 1 + x2
POL(IF_GCD(x1, x2, x3)) = 1 - x1 + x3
POL(c) = -1
POL(false) = 0
POL(le(x1, x2)) = 0
POL(minus(x1, x2)) = 0
POL(pred(x1)) = 1
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
IF_GCD(false, x, y) → GCD(minus(y, x), x)
The following rules are usable:
IF_GCD(false, x, y) → GCD(minus(y, x), x)
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
true → le(0, y)
false → le(s(x), 0)
le(x, y) → le(s(x), s(y))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
IF_GCD(true, x, y) → GCD(minus(x, y), y)
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
IF_GCD(true, x0, 0) → GCD(x0, 0)
IF_GCD(true, x0, s(x1)) → GCD(pred(minus(x0, x1)), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
IF_GCD(true, x0, 0) → GCD(x0, 0)
IF_GCD(true, x0, s(x1)) → GCD(pred(minus(x0, x1)), s(x1))
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
IF_GCD(true, x0, s(x1)) → GCD(pred(minus(x0, x1)), s(x1))
GCD(s(x), s(y)) → IF_GCD(le(y, x), s(x), s(y))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
GCD(s(0), s(s(x0))) → IF_GCD(false, s(0), s(s(x0)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
IF_GCD(true, x0, s(x1)) → GCD(pred(minus(x0, x1)), s(x1))
GCD(s(0), s(s(x0))) → IF_GCD(false, s(0), s(s(x0)))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
IF_GCD(true, x0, s(x1)) → GCD(pred(minus(x0, x1)), s(x1))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
IF_GCD(true, s(z0), s(0)) → GCD(pred(minus(s(z0), 0)), s(0))
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(minus(s(s(z0)), s(z1))), s(s(z1)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(minus(s(z0), 0)), s(0))
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(minus(s(s(z0)), s(z1))), s(s(z1)))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(minus(s(z0), 0)), s(0))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(minus(s(z0), 0)), s(0))
minus(x, 0) → x
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(minus(s(z0), 0)), s(0))
minus(x, 0) → x
pred(s(x)) → x
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
IF_GCD(true, s(z0), s(0)) → GCD(pred(s(z0)), s(0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(s(z0)), s(0))
minus(x, 0) → x
pred(s(x)) → x
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(s(z0)), s(0))
pred(s(x)) → x
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
minus(x0, 0)
minus(x0, s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(pred(s(z0)), s(0))
pred(s(x)) → x
pred(s(x0))
IF_GCD(true, s(z0), s(0)) → GCD(z0, s(0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(z0, s(0))
pred(s(x)) → x
pred(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(z0, s(0))
pred(s(x0))
pred(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(z0), s(0)) → GCD(z0, s(0))
IF_GCD(true, s(s(y_0)), s(0)) → GCD(s(y_0), s(0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
GCD(s(x0), s(0)) → IF_GCD(true, s(x0), s(0))
IF_GCD(true, s(s(y_0)), s(0)) → GCD(s(y_0), s(0))
GCD(s(s(y_0)), s(0)) → IF_GCD(true, s(s(y_0)), s(0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
GCD(s(s(y_0)), s(0)) → IF_GCD(true, s(s(y_0)), s(0))
IF_GCD(true, s(s(y_0)), s(0)) → GCD(s(y_0), s(0))
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ Rewriting
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(minus(s(s(z0)), s(z1))), s(s(z1)))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(pred(minus(s(s(z0)), z1))), s(s(z1)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ Rewriting
↳ QDP
↳ QDPOrderProof
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(pred(minus(s(s(z0)), z1))), s(s(z1)))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
GCD(s(s(x1)), s(s(x0))) → IF_GCD(le(x0, x1), s(s(x1)), s(s(x0)))
Used ordering: Matrix interpretation [3]:
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(pred(minus(s(s(z0)), z1))), s(s(z1)))
M( minus(x1, x2) ) = |
| + |
| · | x1 | + |
| · | x2 |
M( le(x1, x2) ) = |
| + |
| · | x1 | + |
| · | x2 |
M( true ) = |
|
M( pred(x1) ) = |
| + |
| · | x1 |
M( false ) = |
|
M( s(x1) ) = |
| + |
| · | x1 |
M( 0 ) = |
|
M( IF_GCD(x1, ..., x3) ) = | 0 | + |
| · | x1 | + |
| · | x2 | + |
| · | x3 |
M( GCD(x1, x2) ) = | 1 | + |
| · | x1 | + |
| · | x2 |
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
minus(x, 0) → x
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ Rewriting
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
IF_GCD(true, s(s(z0)), s(s(z1))) → GCD(pred(pred(minus(s(s(z0)), z1))), s(s(z1)))
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
minus(x, 0) → x
minus(x, s(y)) → pred(minus(x, y))
pred(s(x)) → x
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
pred(s(x0))
minus(x0, 0)
minus(x0, s(x1))